package com.bot.nft.module.dc.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bot.nft.module.dc.domain.DcOrderInfo;
import com.bot.nft.module.dc.domain.bo.DcOrderInfoBo;
import com.bot.nft.module.dc.domain.bo.DcOrderQueryListBo;
import com.bot.nft.module.dc.domain.vo.DcOrderInfoVo;
import com.bot.nft.module.dc.domain.vo.DcOrderVo;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author RenXiaoZheng
 * @since 2024-01-24
 */
public interface IDcOrderInfoService extends IService<DcOrderInfo> {

    /**
     * 查询藏品订单
     *
     * @param id
     * @param phone
     * @param name
     * @param status   藏品订单状态
     * @param pageNo   当前第几页
     * @param pageSize 每页显示多少条数据
     * @return PageInfo<DcNftInfoBo> 分页信息和藏品信息集合
     */
    Page<DcOrderInfoVo> queryDcOrderInfo(String id, String phone, String name, Integer status, Integer pageNo, Integer pageSize);

    /**
     * 查看藏品订单
     *
     * @param id 藏品订单标识
     * @return DcOrderInfoBo 藏品订单信息，包含藏品名称、藏品单价、订单金额等属性
     */
    DcOrderInfoVo getDcOrderInfo(String id);

    /**
     * 取消藏品订单
     *
     * @param id 藏品订单标识 根据藏品订单标识取消藏品订单
     * @return Boolean 成功/true，失败/false
     */
    Boolean cancelDcNftInfo(String id);

    /**
     * 支付藏品订单
     *
     * @param id 藏品订单标识 根据藏品订单标识支付藏品订单
     * @return Boolean 成功/true，失败/false
     */
    Boolean paymentDcNftInfo(String id);

    /**
     * 购买藏品
     *
     * @param dcOrderInfoBo 藏品订单
     * @return DcOrderInfoBo 藏品订单信息，包含藏品名称、藏品单价、订单金额等属性
     */
    DcOrderInfoVo orderDcNftInfo(DcOrderInfoBo dcOrderInfoBo);


    Page<DcOrderVo> queryOrder(DcOrderQueryListBo dcOrderQueryListBo, Integer pageNo, Integer pageSize);

    /**
     * 购买藏品
     *
     * @param sellId 寄售藏品标识
     * @param mbId   购买人标识
     * @return DcOrderInfoBo 藏品订单信息，包含藏品名称、藏品单价、订单金额等属性
     */
    DcOrderInfoVo buyDcNftInfo(String sellId, String mbId);

    /**
     * 查看订单集合
     *
     * @return
     */
    List<DcOrderInfo> selectOrder();
}
